package com.zang.dp;

/**
 * @author ZVerify
 * @since 2022/11/24 10:18
 * @see <a href="https://leetcode.cn/problems/min-cost-climbing-stairs/description/">...</a>
 **/
public class 使用最小花费爬楼梯 {
    /**
     * 1. 确定dp[i] = dp[i]就是我们到达地i阶台阶花费的钱
     * 2. 我们可以从第一阶台阶开始爬，也可以从第二阶台阶开始爬他们的费用都是当前的台阶花了多少钱+出这个台阶需要花多少钱
     * 3. 我们可以确定dp[1]和dp[2] dp[1]一为0 dp[2]也为0 dp[3为我们当前dp[1]+cos[1-1]或者dp[2]+cos[2-1]里边那个花费少的
     *
     */
    public int minCostClimbingStairs(int[] cost) {
        int[] dp = new int[cost.length+1];

        dp[0] = 0;
        dp[1] = 0;

        for (int i = 2; i <= cost.length; i++) {
            dp[i] = Math.min(dp[i-1] + cost[i-1],dp[i-2]+cost[i-2]);
            System.out.println(dp[i] + "");
        }
        return Math.min(dp[cost.length-1]+cost[cost.length - 1],dp[cost.length-2]+cost[cost.length - 2]);
    }
}
